查看原文
其他

ELF加壳原理与实现

哆啦安全 2022-11-13

The following article is from 安全狗的自我修养 Author haidragon

介绍

        这篇文章主要是讲在ELF文件中加壳原理以及实现一个简单的壳达到抛砖引玉的效果。

环境:

ubuntu 64bit


    前面有讲到了ELF注入shellcode,其中涉及到有对ELF添加节表。然而ELF加壳也需要用到这些技术。

    这里只对ELF文件的代码段进行异或加密,原理是读目标ELF文件对代码段进行异或加密,获取text段代码如下:

Elf64_Shdr *getTextSection(Elf64_Ehdr *header) { size_t i; Elf64_Shdr *section; char *strTable;
i = 0; section = ((void *)header) + header->e_shoff; strTable = (void *)header + ((section + header->e_shstrndx)->sh_offset); while (i < header->e_shnum) { if (strcmp(strTable + section->sh_name, ".text") == 0) return (section); section += 1; i += 1; } return (NULL);}

加密代码如下:

int encryptText(t_header *header) { Elf64_Xword i; char *tmp; Elf64_Shdr *text;
if ((text = getTextSection(header->header)) == NULL) return (-1); i = 0; while (i < text->sh_size) { tmp = ((void *)header->header) + text->sh_offset + i; *tmp ^= 0xa5; i += 1; } return (0);}

然后我们需要写一段shellcode用作解密,代码如下:

  ...    mov rax, r12 mov rax, [rax] mov rdx, r12 sub rdx, rax mov rdi, 0 mov rsi, r12 add rsi, dataend + 12 loop: cmp rdi, [rsi] je endLoop xor byte [rdx], 0xa5 add rdx, 1 add rdi, 1 jmp loop endLoop:    ret    ...

最后我们注入shellcode到ELF文件中,同时修改入口从shellcode开始执行。效果如下:

系统视频教程可以联系作者。

# ELF视频教程

##  ELF

* --- 1. 课程介绍.mp4

* --- 2. ELF 介绍.mp4

* --- 3. ELF 打印文件头信息.mp4

* --- 4. ELF 打印节表头信息.mp4

* --- 5. ELF 打印程序头信息.mp4

* --- 6. ELF 打印动态节信息(dynamic dynstr).mp4

* --- 7. ELF 打印重定位表(rel).mp4

* --- 8. ELF 打印重定位表(rela).mp4

* --- 9. ELF 打印符号表(symtab).mp4

* --- 10. ELF 枚举函数.mp4

* --- 11. 获取内存中ELF模块.mp4

* --- 12. 内存中ELF与实体文件区别(装载).mp4

* --- 13. 打印内存中ELF头信息.mp4

* --- 14. 打印ELF中指定的代码段.mp4

* --- 15. shellcode编写.mp4

* --- 16. ELF添加节实现.mp4

* --- 17. 劫持执行文件入口.mp4

* --- 18. ELF静态注入shellcode.mp4

* --- 19. ELF静态注入模块.mp4

* --- 20. ELF动态注入模块.mp4

* --- 21. hook原理.mp4

* --- 22. ELF的got hook.mp4

* --- 23. ELF的plt hook.mp4

* --- 24. ELF加壳原理.mp4

* --- 25. 实现一个简单ELF加密壳.mp4

* --- 26. ELF加载器实现原理.mp4

* --- 27. ELF加载器实现.mp4

* --- 28. linux驱动开发基础.mp4

* --- 29. linux内核中实现so注入.mp4

* --- 30. 总结与ollvm介绍.mp4


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存